/**
 * Copyright (c) 2015-present, Haltu Oy
 * Released under the MIT license
 * https://github.com/haltu/muuri/blob/master/LICENSE.md
 */

var tempArray = [];
var numberType = 'number';

/**
 * Insert an item or an array of items to array to a specified index. Mutates
 * the array. The index can be negative in which case the items will be added
 * to the end of the array.
 * 插入一个项或一个项数组以将其数组到指定的索引。
 * 变异数组。索引可以是负数，在这种情况下，项将被添加到数组的末尾。
 * 
 * @param {Array} array
 * @param {*} items
 * @param {Number} [index=-1]
 */
export default function arrayInsert(array, items, index) {
  var startIndex = typeof index === numberType ? index : -1;
  if (startIndex < 0) startIndex = array.length - startIndex + 1;

  // array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
  // start 指定修改的开始位置（从0计数）。如果超出了数组的长度，则从数组末尾开始添加内容；如果是负值，则表示从数组末位开始的第几位（从-1计数，这意味着-n是倒数第n个元素并且等价于array.length-n）；如果负数的绝对值大于数组的长度，则表示开始位置为第0位。
  // 这里用apply是因为 array为类数组对象list
  array.splice.apply(array, tempArray.concat(startIndex, 0, items));
  tempArray.length = 0;
}
